package com.simple.relaxed.manager;

import java.util.Map;

/**
 * 此类定义了管理者应该拥有的基本方法
 *
 * @param <T> 绑定 S 的键的类型
 * @param <S> 要管理的Value的类型
 */
public interface Manager<T, S> {

    /**
     * 注册要管理的对象
     *
     * @param t 键的值
     * @param s 被管理的对象
     */
    void register(T t, S s);

    /**
     * 注销被管理的对象
     *
     * @param t 键的值
     */
    void unregister(T t);

    /**
     * 查看指定键映射的值
     *
     * @param t 指定的键
     * @return 指定的键，映射的值
     */
    S lookup(T t);

    /**
     * 获取此管理者的容器对象
     *
     * @return 管理容器
     */
    Map<T, S> lookup();

    /**
     * 注销所有被管理的对象
     */
    void clear();
}
